import Vue from 'vue'
import App from './App.vue'

//引入路由
import router from '@/router'
Vue.config.productionTip = false

//三级联动组件-全局组件
import TypeNav from '@/components/TypeNav';
//引入全局组件Carousel
import Carousel from '@/components/Carousel'
//引入全局组件Pagination
import Pagination from '@/components/Pagination'
//注册全局组件,全局名字,哪一个组件
Vue.component(Carousel.name, Carousel);
//注册组件,全局名字,哪一个组件
Vue.component(TypeNav.name, TypeNav);
//注册组件
Vue.component(Pagination.name, Pagination)


//引入仓库
import store from '@/store';
//测试category接口
import { reqCategoryList } from '@/api';
reqCategoryList();

//引入mockServe.js mock数据
import '@/mock/mockServe';


//引入swiper样式
import "swiper/css/swiper.css";

//统一接口api文件夹全部请求函数
import * as API from '@/api'
import hutao from '@/assets/hutao.jpg'

//引入button和select从elementui
import { Button, Select, MessageBox } from 'element-ui';
// 注册组件
Vue.component(Button.name, Button);
Vue.component(Select.name, Select);
// elementui注册组件另一种写法，挂在原型上
Vue.prototype.$msgbox = MessageBox;
Vue.prototype.$alert = MessageBox.alert;

//引入lazyload插件
import VueLazyload from 'vue-lazyload'
// 使用插件
Vue.use(VueLazyload, {
  // 懒加载默认图片
  loading: hutao
})

// 引入自定义插件
import myPlugins from '@/plugins/myPlugins'
// 使用插件
Vue.use(myPlugins, {
  name: 'upper'
})

//引入表单校验插件
import "@/plugins/validate"
new Vue({
  render: h => h(App),
  //统一引入
  //全局事件总线$bus
  beforeCreate() {
    Vue.prototype.$bus = this;
    // 把请求全部挂在vue原型对象上
    Vue.prototype.$API = API;
  },

  //注册路由,es6同名kv写法
  router,

  //注册仓库,这时候组件身上都有$route,$router属性
  store

}).$mount('#app')
